package com.lkhd.activity.service;

import java.util.List;

import com.github.pagehelper.PageInfo;
import com.lkhd.manage.pojo.Activity;
import com.lkhd.manage.pojo.Activitymultipartcategory;
import com.lkhd.manage.pojo.Activityuserplan;
import com.lkhd.manage.pojo.Category;
import com.lkhd.manage.pojo.Tickettype;
import com.lkhd.manage.povo.ActivityVO;
import com.lkhd.manage.povo.CommentVo;
import com.lkhd.manage.povo.VolunteerVo;

import tk.mybatis.mapper.entity.Example;

/**
 * 活动服务
 * @author Administrator
 *	2018-9-15 09:19:22
 */
public interface ActivityService {
	
	/**
	 * 发布活动
	 * @param activity 	活动基本信息
	 * @param ticketTypes 票种
	 * @param acitivityUserPlans	活动人员安排
	 * @param categorys				多分类
	 * @return
	 */
	public int releaseActivity(Activity activity, 
								List<Tickettype> ticketTypes, 
								List<Activityuserplan> acitivityUserPlans,
								List<Activitymultipartcategory> categorys);
	
	
	/**
	 * 下架活动(如果有用户报名不能下架)
	 * @param ActivityId 
	 * @param is true 下架  false上架
	 * @return
	 */
	public int freezeActivity(Long ActivityId,boolean is);
	
	/**
	 * 修改活动基本信息（人员安排，票种，分类，在其他方法中）
	 * @param activity
	 * @return
	 */
	public int update(Activity activity);
	
	/**
	 * 添加活动票种
	 * @param ticketType
	 * @return
	 */
	public int addTicketType(Tickettype ticketType);
	
	/**
	 * 删除活动票种(有人购买该票种不能删除)
	 * @param ticketTypeId
	 * @return
	 */
	public int delTicketType(Long ticketTypeId);
	
	/**
	 * 修改活动票种
	 * @param ticketType
	 * @return
	 */
	public int updateTicketType(Tickettype ticketType);
	
	/**
	 * 添加活动人员安排
	 * @param acitivityUserPlan
	 * @return
	 */
	public int addActivityUserPlan(Activityuserplan acitivityUserPlan);
	
	/**
	 * 删除活动人员安排
	 * @param acitivityUserPlanId
	 * @return
	 */
	public int delActivityUserPlan(Activityuserplan acitivityUserPlan);
	
	/**
	 * 修改活动人员安排
	 * @param acitivityuserplan
	 * @return
	 */
	public int updateActivityUserPlan(Activityuserplan acitivityuserplan);
	
	
	/**
	 * 活动添加分类
	 * @param activityMultipartCategory
	 * @return
	 */
	public int addCategory(Activitymultipartcategory activityMultipartCategory);
	
	/**
	 * 活动删除分类
	 * @param activityMultipartCategory
	 * @return
	 */
	public int delCategory(Activitymultipartcategory activityMultipartCategory);
	
	
	/**
	 * 根据活动id获取活动评论
	 * @param ActivityId
	 * @return
	 */
	public PageInfo<CommentVo> commentByActivityId(Long ActivityId,int pageNum, int pageSize);
	
	/**
	 * 根据活id获取活动票种
	 * @param ActivityId
	 * @return
	 */
	public List<Tickettype> ticketTypeByActivityId(Long ActivityId);
	
	/**
	 * 根据活动id获取活动分类
	 * @param ActivityId
	 * @return
	 */
	public List<Category> categoryByActivityId(Long ActivityId);
	
	/**
	 * 	根据活id获取活动志愿者
	 * @param ActivityId
	 * @return
	 */
	public List<VolunteerVo> volunteerByActivityId(Long ActivityId);
	
	/**
	 * 	根据活动id获取活动详细
	 * @param ActivityId
	 * @return activityVo 活动基本信息,
				活动分类
				主负责人
				地址
	 */
	public ActivityVO selectDetailById(Long ActivityId);
	
	/**
	 * 根据活动id获取活动信息 【只包含地址】
	 * @param ActivityId
	 * @return
	 */
	public ActivityVO selectBaseById(Long ActivityId);
	
	/**
	 * 按条件查询活动列表
	 * @return
	 */
	public PageInfo<Activity> selectAll(Example example,int pageNum, int pageSize);
}
